import { defineUserConfig } from "vuepress";
import { searchPlugin } from "@vuepress/plugin-search"; // 搜索插件: https://vuepress-theme-hope.gitee.io/v2/zh/guide/feature/search.html
import { registerComponentsPlugin } from "@vuepress/plugin-register-components";
import { path } from '@vuepress/utils'
import theme from "./theme.js"; // 导入主题相关

// const base = <'/' | `/${string}/`>process.env.BASE || '/';
const base = "/sx-note-blog/";

export default defineUserConfig({ // 用户自定义配置
  // base 这里设置了非 / 的值的话, 将会作为前缀自动地插入到所有以 / 开始的其他选项的链接中，所以你只需要指定一次
  // 但是不是所有以 / 开头的链接前面都会拼接这个 base, 因为实际中 head 中配置的 href 就没有向前拼接这个 base
  // base: "/sx-note-blog/", // 此配置参考: https://vuepress-theme-hope.github.io/v2/zh/cookbook/tutorial/deploy.html
  base,
  // port: 8081,
  // dest: "", // 部分配置可参考 : https://v2.vuepress.vuejs.org/zh/reference/config.html

  locales: {  // 多语言设置
    "/": {
      lang: "zh-CN",
      title: "人间无事人",
      description: "逢人不说人间事，便是人间无事人",
      // 参考 base 的解释, 所以在此需要加入 / 前缀
      // 最初以为参考 base 的解释的话, 本主题在打包的时候会将 base 拼接在所有以 / 开始的链接前面，但是事与愿违
      // 实际上，base 的解释也不能说错，只是这里这个好像不在它的管辖范围内，可以理解的。
      // （类似，一个对象的明确属性，肯定定义的时候是有明确含义的；但是，一个字典 map 的话，里面 value 的值是随着 key 来进行解释的；因此，这里没加也可以理解）
      head: [['link', { rel: 'icon', href: base + 'logo.svg' }]],
    },
  },

  theme,  // 主题设置

  plugins: [ // 插件设置
    registerComponentsPlugin({ // 注册全局组件的插件
      componentsDir: path.resolve(__dirname, './components'),
    }),

    searchPlugin({  // 搜索插件
      locales: {  //多语言支持
        '/': {
          placeholder: '搜索本站',
        },
      },
      hotKeys: ["ctrl", "k"], // 热键支持
      maxSuggestions: 7,  // 最大推荐个数
      isSearchable: (page) => page.path !== '/',  // 排除首页
    }),
  ],
  shouldPrefetch: false,
});
